﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MicroCloud.Tests.DataStruct
{
    public class logicMethod
    {
        /// <summary>
        ///  全1则1
        /// </summary>
        [Fact]
        private void And()
        {
            int a = 5;          // 二进制表示为 0000 0101
            int b = 3;          // 二进制表示为 0000 0011
            int result = a & b; //       结果为 0000 0001，即1
        }

        /// <summary>
        /// 有1则1
        /// </summary>
        [Fact]
        private void Or()
        {

            int a = 5;          // 二进制表示为 0000 0101
            int b = 3;          // 二进制表示为 0000 0011
            int result = a | b;       // 结果为 0000 0111，即7
        }

        /// <summary>
        /// 相同为0，异为1
        /// </summary>
        [Fact]
        private void NotOr()
        {

            int a = 5;      // 二进制表示为 0000 0101
            int b = 3;      // 二进制表示为 0000 0011
            int result = a ^ b; //   结果为 0000 0110，即6
        }

        /// <summary>
        /// && ：当两个操作数都为 true 时，结果为 true。
        /// 如果第一个操作数为 false，则不会评估第二个操作数，因为结果已经确定为 false（短路评估）。
        /// 
        /// ||：只要一个操作数为 true，结果即为 true。
        /// 如果第一个操作数为 true，则不会评估第二个操作数，因为结果已经确定为 true（短路评估）。
        /// </summary>
        [Fact]
        public void LogicAndOr()
        {
            bool a = true;
            bool b = false;

            bool resultAnd = a && b; // resultAnd将为false，因为b是false
            bool resultOr = a || b;  // resultOr将为true，因为a是true

            Console.WriteLine($"结果与运算: {resultAnd}");
            Console.WriteLine($"结果或运算: {resultOr}");

        }

    }
}
